package com.aliwo.design.patterns.resingleton;

/**
 * 重学设计模式 单例模式 懒汉模式 -03 线程安全.
 * 双重检测锁
 *
 * @author Xu Yayuan
 * @date 2022/3/24
 */
public class Singleton_03 {
    // 一： 定义实例变量
    private static volatile Singleton_03 instance;

    // 二： 构造方法私有化，防止外部new的方式实例化bena
    private Singleton_03() {
    }

    // 三： 提供一个点 供外部获取单例bena
    public static Singleton_03 getInstance() {
        if (null != instance) {
            return instance;
        }
        synchronized (Singleton_03.class) {
            if (null == instance) {
                instance = new Singleton_03();
            }
        }
        return instance;
    }
}
